#pragma once

class Variable final
{
public:
	Variable(const std::string& name);
	Variable(const std::string& name, const std::string& s);
	Variable(const std::string& name, int i);
	Variable(const std::string& name, float d);
	Variable(const std::string& name, bool b);
	~Variable();

	/*--------------------------------------------------------------------------*/

	void				Set(int i);
	void				Set(const std::string& s);
	void				Set(float d);
	void				Set(bool b);

	/*--------------------------------------------------------------------------*/

	int					GetInt() const;
	float				GetFloat() const;
	const std::string&	GetString() const;
	bool				GetBool() const;

	/*--------------------------------------------------------------------------*/

	const std::string&	GetName() const;

private:
	std::string			m_name;

	std::string			m_strValue;
	int					m_intValue;
	float				m_fltValue;
};
